package ru.fivestarter.multileveledcache;

import ru.fivestarter.multileveledcache.cache.Cache;
import ru.fivestarter.multileveledcache.cachecreator.HDDCacheCreator;
import ru.fivestarter.multileveledcache.cachecreator.MemoryCacheCreator;
import ru.fivestarter.multileveledcache.strategy.StrategyVariation;

public class Main {
    public static void main(String[] args) {
        String obj1="Я первый";
        String obj2="Я второй";
        String obj3="Я третий";
        String obj4="Я четвертый";
        String obj5="Я пятый";
        //Изменить инициализацию и все параметризировать, хотя бы ключи
        Cache multiLeveledCache= new MultiLeveledCache(new MemoryCacheCreator(),StrategyVariation.LRU,3,
                                                  new HDDCacheCreator(),StrategyVariation.LRU,5);
        
        multiLeveledCache.add("Привет первый", obj1);
        multiLeveledCache.add("Привет второй", obj2);
        multiLeveledCache.add("Привет третий", obj3);
        multiLeveledCache.add("Привет четвертый", obj4);
        multiLeveledCache.add("Привет пятый", obj5);
        
        System.out.println(multiLeveledCache.find("Привет первый"));
        System.out.println(multiLeveledCache.find("Привет второй"));
        System.out.println(multiLeveledCache.find("Привет третий"));
        System.out.println(multiLeveledCache.find("Привет четвертый"));
        System.out.println(multiLeveledCache.find("Привет пятый"));
        
        multiLeveledCache.remove("Привет первый");
        
        System.out.println(multiLeveledCache.find("Привет первый"));
        System.out.println(multiLeveledCache.find("Привет второй"));
        
        multiLeveledCache.clear();
    }
}
